# 这个是查看数据的类型
print(type(10))

# 在Python中默认全部大写的变量是常量，不能修改（不是真正意义上的常量，只是约定俗成的用法）
PI = 3.14
PI = 3 # 这里就会发生一个警告
print(PI)

# eval()函数是把字符串两边的引号去掉
print(eval('20+30')) # 本来是一个字符串，但是经过eval函数的处理就把引号去掉可以进行单独的计算
# 但是要注意的是：这个处理之后可能会出现一些语法错误
# print(eval('北京欢迎你！'))

# 算术运算符
# 大部分还是和我们在Java和C语言中学的一样，但是也有一些不同
# 除法运算符/和//
# 除法运算符/会返回一个浮点数，而//会返回一个整数
print(10/3) # 3.3333333333333335
print(10//3) # 3

# 乘方运算符**
print(2**3) # 8

# 赋值运算符
# 赋值运算符=可以用来给变量赋值，也可以用来计算表达式的值并赋值给变量
a = 10
b = 20
c = a + b
print(c) # 30
c = a - b
print(c) # -10
c = a * b
print(c) # 200
c = a / b # 进行浮点数除法
print(c) # 0.5
c = a // b # 进行整数除法
print(c) # 0
c = a ** b


# 赋值运算符大部分和我们在Java和C语言中学的一样，但是也有一些不同
# 在Python存在一个特殊的赋值操作：系列解包赋值
# 这个操作可以把一个序列中的元素依次赋值给多个变量
# 语法：变量1, 变量2, 变量3 = 序列
# 注意：序列的长度必须和变量的个数相同
a, b, c = 10, 20, 30
print(a, b, c) # 10 20 30
# a, b, c = 10, 20, 30, 40 # 序列的长度必须和变量的个数相同，否则会出现语法错误
print(a, b, c) # 10 20 30
# 系列解包赋值也可以用于交换两个变量的值
# 系列解包赋值也可以用于交换两个变量的值
a, b = b, a # 这两个变量的赋值操作是同时进行的，所以可以交换两个变量的值
print(a, b) # 20 10

# 运算符优先级
# 1. 圆括号()
# 2. 乘方运算**
# 3. 乘除运算*和/
# 4. 加减运算+和-

# 字符串相乘
# 字符串相乘可以用来连接多个字符串
# 语法：字符串1 * 整数
print('hello' * 3) # hellohellohello（字符串重复3次）

# 布尔值
# 在Python中，布尔值只有True和False两个值（注意区分Java和C语言中的true和false）
# 布尔值可以用and、or和not运算符进行逻辑运算（注意写法）
# and运算符：只有两个都为True时，结果才为True
# or运算符：只要其中有一个为True，结果就为True
# not运算符：取反，True变False，False变True
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False
print(not True) # False
print(not False) # True

# Python的移位操作符中，右移只是类似于Java和C语言找中的算术右移
# 左移操作符和右移操作符都是对整数进行乘除运算（整数除法）

# 在Python中，字符串的索引从0开始，可以用负数索引从字符串的末尾开始计数
# 字符串的切片操作可以指定起始位置、结束位置和步长（左闭右开的区间）
# 字符串的比较操作可以用==和!=来进行
# 字符串的拼接操作可以用+运算符来进行

# 在Python中可以用中文来作为变量名，但是需要确保是合法的标识符
北京 = 'Beijing' # 不建议这样写
print(北京) # Beijing

# 通过round函数可以对浮点数进行四舍五入，并指定保留几位小数
# 语法：round(浮点数, 保留几位小数)
# 如果不指定的话，默认只取整数部分（同样是四舍五入）
print(round(3.1485926, 2)) # 3.15
print(round(3.1415926, 2)) # 3.14
print(round(3.84)) # 4

# 在Python中，可以用len函数来获取序列的长度
print(len('hello world'))

# 在Python中，不存在char这个数据类型，如果要表示单个字符，可以用字符串来表示
# 字符串的索引操作可以用来获取单个字符
print('hello world'[0]) # h
print('hello world'[5]) # o
print('hello world'[-1]) # d


# 单个字符在Python中也是用字符串表示
char = 'A'
print(type(char))  # 输出: <class 'str'>

# 字符串可以包含多个字符
string = "Hello, World!"
print(type(string))  # 输出: <class 'str'>